#ifndef OBJECT_H_
#define OBJECT_H_

#include "Point.h"
#include "Ray.h"
#include "Color.h"
#include "Lighting.h"

namespace Geometry
{
	class Object
	{
		Properties::Color m_color;
		Properties::Lighting m_lighting;

	public:

		Object():m_color(),m_lighting(){}
	    Object( Properties::Color _c, Properties::Lighting _l ):m_color(_c), m_lighting(_l){}

		virtual bool intersect(const Ray& _r, Point& _p, float& _t) = 0;
		virtual Ray getReflectedRay( const Ray& _incoming, const Point& _p ) = 0;
		virtual Vector getNormal( const Point& _p ) = 0;

		inline Properties::Color color() const { return m_color; };
		inline Properties::Lighting lighting() const { return m_lighting; };
	};
}


#endif